package com.zrrd.learn.chapter05;

import java.util.Arrays;

/**
 * 4题
 *
 * @author wrn
 * @version 1.0
 * @date 2023/7/12 11:02
 */

public class LearnArray03 {

    //4 : a : [1，2,3,4] b : [2,3,4,5]  左差集 以左而的为主 a为主 找a里面不在b里面
    //5 : a : {1,1,1,2,3,4,5,1,2,3,4,7,6} 每一个元素出现的次数 (只有一次的数)

    /**
     * 这个方法 用来求两个数的左差集
     * 以左面的数组为主，右面的为从，求不同
     *
     * @param master 主数组
     * @param slave  从数组
     */
    public static void question4_1(int[] master, int[] slave) {
        //4 重复上面的操作
        for (int x = 0; x < master.length; x++) {
            //1 从主数组里拿到一个数
            int temp = master[x];
            //2 与从数组里面全部都比较一下
            boolean ist = true;
            for (int i = 0; i < slave.length; i++) {
                if (slave[i] == temp) {
                    ist = false;
                    break;
                }
            }
            //3 当所有的都不相同的时候这个就是我们要的差数
            if (ist) {
                System.out.printf("这是一个差数%d", temp);
            }
        }
    }

    public static void question4_2(int[] slave,int[] master) {
        question4_1(master,slave);
    }

    public static void question4_3(int[] master,int[] slave) {
        question4_1(master,slave);
        question4_1(slave,master);
    }

    //    public static void question5(int[] array) {
//        //1 : 先排序
//        Arrays.sort(array);
//        //2 : 先来一次输出
//        System.out.println(Arrays.toString(array));
//
//        //3。 先拿到第一个
//        for (int i = 0; i < array.length; i++) {
//            int num = 0;
//            for(int j = i;j < array.length;j++){
//                if(array[i] != array[j]){
//                    num = j;
//                    break;
//                }
//            }
//
//               System.out.printf("当前数组里的%d,有多少%d个\n",array[i],num == 0 ? 1 : num-i);
//            i = (num == 0) ? i : num-1;
//        }
//
//    }



//    public static void question5(int[] array) {
//        //1 : 先排序
//        Arrays.sort(array);
//        //2 : 先来一次输出
//        System.out.println(Arrays.toString(array));
//
//        //3。 先拿到第一个
//        for (int i = 0; i < array.length; i++) {
//            int num = 0;
//            for (int j = i; j < array.length; j++) {
//                if (array[i] != array[j]) {
//                    num = j;
//                    break;
//                }
//            }
//
//            System.out.printf("当前数组里的%d,有多少%d个\n", array[i], num == 0 ? array.length - i : num - i);
//            i = (num == 0) ? array.length - 1 : num - 1;
//        }
//
//    }


    public static void main(String[] args) {
        int[] master = {1, 2, 3, 5};
        int[] slave = {2, 3, 4};
        question4_1(master, slave);
        System.out.println("\n");
        question4_2(master, slave);
        System.out.println("\n");
        question4_3(master, slave);
    }

}

